package 简单.贪心思想;

/**
 * 给你一个整数数组 nums ，其中总是存在 唯一的 一个最大整数 。
 * <p>
 * 请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。
 * 如果是，则返回 最大元素的下标 ，否则返回 -1 。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/largest-number-at-least-twice-of-others
 */
public class 至少是其他数字两倍的最大数_747 {

    public static void main(String[] args) {

        int[] nums = {1, 0};
        System.out.println(dominantIndex(nums));
    }

    /**
     * 找出数组中第一大的元素和第二大的元素
     * two*2<=one
     *
     * @param nums
     * @return
     */
    public static int dominantIndex(int[] nums) {
        if (nums.length == 1) {
            return 0;
        }
        int max;
        int secondMax;
        if (nums[0] > nums[1]) {
            max = 0;
            secondMax = 1;
        } else {
            max = 1;
            secondMax = 0;
        }
        for (int i = 2; i < nums.length; i++) {
            if (nums[i] > nums[max]) {  //当前元素比之前的最大元素大
                secondMax = max;  //那么之前的最大元素，变成了第二大的元素
                max = i;  //当前元素变成最大元素
            } else if (nums[i] > nums[secondMax]) {
                secondMax = i;
            }
        }
        if (nums[secondMax] * 2 <= nums[max]) {
            return max;
        }
        return -1;
    }

}
